class Solution {
public:
    bool allIn(vector<int>& hashs,vector<int>& hasht)
    {
        for(int i=0;i<256;i++)
        {
            if(hashs[i]<hasht[i])//如果t里的字符数比s大，表示s没有完全含有t
                return false;
        }
        return true;
    }
    string minWindow(string s, string t) {
        int slen=s.size();
        int tlen=t.size();
        if(tlen>slen)
            return "";
        string ans;
        vector<int> hashs(256);
        vector<int> hasht(256);
        for(auto ch:t)
        {
            hasht[ch]++;
        }
        int i=0,j=0;
        int min=slen;
        while(j<slen)
        {
            hashs[s[j]]++;
            while(allIn(hashs,hasht))
            {
                if(j-i+1<=min)
                {
                    min=j-i+1;
                    ans=s.substr(i,j-i+1);
                }
                hashs[s[i++]]--;   
            }
            j++;
        }
        return ans;
    }
};